package com.banmao.CarlCamp.Day05;

import java.util.HashMap;

/**
 * https://leetcode.cn/problems/two-sum/
 */
public class LC1 {

    public int[] twoSum(int[] nums, int target) {
        // 重温经典一号题目
        // 能解很简单，所以直接进阶 —— 时间复杂度低于 O(n^2)
        // 这个倒是记得 —— 使用 Map 集合，通过判断当前数字到 target 的差值是否存在于 Map

        int[] res = new int[2];
        // key 为 nums 里的数组，value 为 对应数字在 nums 的下标
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            int sub = target - nums[i];
            if (map.containsKey(sub)) {
                res[0] = i;
                res[1] = map.get(sub);
                break;
            }
            map.put(nums[i], i);
        }
        return res;
    }

}
